﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using orienta.Models;
using orienta.Utils;

namespace orienta.Helper
{
    public class CompendioDetalleHelper
    {
        private GoodTireEntities db = new GoodTireEntities();

        #region Compendio

        public int InsertarCompendio(ORIMaeCompendio compendio)
        {
            try
            {
                //if(compendio.dFecIniVig)
                var idUsuario = 1;

                db.uspInsertCompendio(compendio.vNomTabla.ToUpper(), compendio.dFecIniVig, compendio.dFecFinVig, idUsuario);
                //db.ORIMaePersona.AddObject(personaInfo);
            }
            catch (Exception)
            {
                return 0;
            }
            return 1;
        }

        public int ActualizarCompendio(ORIMaeCompendio compendio)
        {
            try
            {
                var id = Convert.ToInt32(compendio.nIdeCompendio.ToString());

                db.uspUpdateCompendio(id, compendio.vNomTabla.ToUpper(), compendio.dFecIniVig, compendio.dFecFinVig);



            }
            catch (Exception)
            {
                return 0;
            }
            return 1;
        }

        public int ContarCompendio()
        {
            var resultado = 0;
            try
            {
                resultado = db.ORIMaeCompendio.Count();
            }
            catch (Exception)
            {
                return resultado;
            }
            return resultado;
        }

        public IList<ORIMaeCompendio> BuscarCompendio(int filasPorPagina, int pagina, string columnaOrden, string direccionOrden, string where)
        {
            try
            {
                return db.uspListarCompendios(filasPorPagina, pagina, columnaOrden, direccionOrden, where).ToList();
            }
            catch (Exception ex) { throw new Exception(ex.Message); }
        }

        public ORIMaeCompendio SingleCompendio(int id)
        {
            var resultado = new ORIMaeCompendio();
            try
            {
                resultado = db.uspSingleCompendio(id).SingleOrDefault();
                //resultado = db.ORIMaeCompendio.Where(m => m.nIdeCompendio == id).Single();
            }
            catch (Exception)
            {
                return resultado;
            }
            return resultado;
        }
        #endregion Compendio

        #region Detalle

        public int InsertarDetalleCompendio(ORIDetCompendio detalleCompendio)
        {
            try
            {
                if (!string.IsNullOrEmpty(detalleCompendio.vDesRef1))
                    detalleCompendio.vDesRef1 = detalleCompendio.vDesRef1.ToUpper();
                if (!string.IsNullOrEmpty(detalleCompendio.vDesRef2))
                    detalleCompendio.vDesRef2 = detalleCompendio.vDesRef2.ToUpper();
                if (!string.IsNullOrEmpty(detalleCompendio.vDesRef3))
                    detalleCompendio.vDesRef3 = detalleCompendio.vDesRef3.ToUpper();
                //var idgrupo = detalleCompendio.nIndEleGrupo.HasValue ? Convert.ToInt32(detalleCompendio.nIndEleGrupo.ToString()) : 1;
                var idgrupo = Convert.ToInt32(detalleCompendio.nIndEleGrupo.ToString());
                var idCompendio = detalleCompendio.nIdeCompendio.HasValue ? Convert.ToInt32(detalleCompendio.nIdeCompendio.ToString()) : 0;
                if (idCompendio == 0) return 0;
                return db.uspInsertDetalleCompendio(idCompendio, detalleCompendio.vCodElemento.ToUpper(), detalleCompendio.vNomDetalle.ToUpper(),
                    detalleCompendio.vNomCorto.ToUpper(), idgrupo, detalleCompendio.dtFecIniVig, detalleCompendio.dtFecFinVig, 1,
                    detalleCompendio.vDesRef1, detalleCompendio.vDesRef2, detalleCompendio.vDesRef3);
            }
            catch (Exception)
            {
                return 0;
            }
        }

        public int ActualizarDetalleCompendio(ORIDetCompendio detalleCompendio)
        {
            try
            {
                if (!string.IsNullOrEmpty(detalleCompendio.vDesRef1))
                    detalleCompendio.vDesRef1 = detalleCompendio.vDesRef1.ToUpper();
                if (!string.IsNullOrEmpty(detalleCompendio.vDesRef2))
                    detalleCompendio.vDesRef2 = detalleCompendio.vDesRef2.ToUpper();
                if (!string.IsNullOrEmpty(detalleCompendio.vDesRef3))
                    detalleCompendio.vDesRef3 = detalleCompendio.vDesRef3.ToUpper();
                //var idgrupo = detalleCompendio.nIndEleGrupo.HasValue ? Convert.ToInt32(detalleCompendio.nIndEleGrupo.ToString()) : 1;
                var idgrupo = Convert.ToInt32(detalleCompendio.nIndEleGrupo.ToString());
                var id = Convert.ToInt32(detalleCompendio.nIdeDetalle.ToString());

                db.uspUpdateDetalleCompendio(id, detalleCompendio.vCodElemento.ToUpper(), detalleCompendio.vNomDetalle.ToUpper(),
                    detalleCompendio.vNomCorto.ToUpper(), idgrupo, detalleCompendio.dtFecIniVig, detalleCompendio.dtFecFinVig,
                    detalleCompendio.vDesRef1, detalleCompendio.vDesRef2, detalleCompendio.vDesRef3);

                Cache.actualizarCompendio(detalleCompendio.nIdeCompendio.Value);
            }
            catch (Exception)
            {
                return 0;
            }
            return 1;
        }

        public int ContarDetalleCompendio(string where)
        {
            try
            {
                var resultado = db.uspContarDetalleCompendio(where).SingleOrDefault();
                return resultado.HasValue ? resultado.Value : 0;
            }
            catch (Exception)
            {
                return 0;
            }
        }

        public IList<ORIDetCompendio> BuscarDetalleCompendio(int filasPorPagina, int pagina, string columnaOrden, string direccionOrden, string where)
        {
            try
            {
                return db.uspListarDetalleCompendios(filasPorPagina, pagina, columnaOrden, direccionOrden, where).ToList();
            }
            catch (Exception ex) { throw new Exception(ex.Message); }
        }

        public ORIDetCompendio SingleDetalleCompendio(int id)
        {
            var resultado = new ORIDetCompendio();
            try
            {
                //resultado = db.ORIDetCompendio.Where(m => m.nIdeDetalle == id).Single();
                resultado = db.uspSingleDetalleCompendio(id).SingleOrDefault();

            }
            catch (Exception)
            {
                return resultado;
            }
            return resultado;
        }

        #endregion Detalle

        public IList<GruposView> ListarbyGrupo(int idGrupo)
        {
            return db.GruposView.Where(m => m.nIdeDetElemento == idGrupo).ToList();
        }
        public int InsertarDetalleGrupo(GruposView detalleGrupo)
        {
            try
            {
                var idCabeza = Convert.ToInt32(detalleGrupo.nIdeDetElemento);
                var idDetalle = Convert.ToInt32(detalleGrupo.nIdeDetalle);
                if (idDetalle == 0) return 0;
                return db.uspInsertGrupo(idCabeza, idDetalle);
            }
            catch (Exception)
            {
                return 0;
            }
        }

        public int ActualizarDetalleGrupo(GruposView detalleGrupo)
        {
            try
            {
                var idgrupo = detalleGrupo.nIdeGrupo;
                var id = Convert.ToInt32(idgrupo);

                db.uspUpdateGrupo(id);
            }
            catch (Exception)
            {
                return 0;
            }
            return 1;
        }

        public List<ORIDetCompendio> getCompendioDetalleList(int id)
        {
            try
            {
                return db.ORIDetCompendio.Where<ORIDetCompendio>(o => o.nIdeCompendio == id).ToList();
            }
            catch (Exception ex) { throw new Exception(ex.Message); }
        }
    }
}